如何5分钟快速搭建一个Kubernetes集群。
Key | Value |
---|---|
OS | CentOS 7 |
Docker | 建议 >= 13.1 |
Kubernetes | 1.10.1 |
Kubernetes Master | 无HA, 单机集群 |
Kubernetes etcd | etcd容器, 无HA |
网络 | flannel |
Docker
安装并启动docker,这里不做赘述。
Kubernetes组件
安装kubeadm, kubelet, kubectl。
yum源安装
我们可以直接使用Kubernetes Google官方的yum源:1
2
3
4
5
6
7[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum.repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/dock/rpm-package-key.gpg
但由于一些众所周知的原因,我们需要配置代理才能使用上述yum源。在直连的情况下我们可以使用aliyun的源,但有时更新不够及时:1
2
3
4
5
6
7
8[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
使用vim /etc/yum.repos.d/kubernets.repo
配置好上述一个yum源后,使用yum install -y kubeadm kubectl kubelet
安装,但不能保证版本为v1.10.1。
RPM安装
也可以通过下载rpm包的方式进行离线安装:
kubelet
kubectl
kubeadm
下载完成后使用yum localinstall *.rpm
安装。
其他操作
还有一些额外操作需要完成:
关闭swap。
1
2
3swapoff -a
# 注释掉有swap的一行
vim /etc/fstab关闭防火墙。
1
systemctl stop firewalld;systemctl disable firewalld;setenforce 0
关闭SELINUX。
1
/etc/selinux/config设置SELINUX=disabled
启用bridge-nf模式。
1
sysctl net.bridge.bridge-nf-call-iptables=1
设置docker的cgroup驱动为cgroupfs。
1
2
3/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd-current ...
--exec-opt native.cgroupdriver=cgroupfs修改kubelet的cgroup驱动,与docker保持一致为cgroupfs。
1
2/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"导入镜像。
1
2
3
4
5
6
7
8
9
10
11k8s.gcr.io/etcd-amd64:3.1.12
k8s.gcr.io/kube-apiserver-amd64:v1.10.1
k8s.gcr.io/kube-controller-manager-amd64:v1.10.1
k8s.gcr.io/kube-proxy-amd64:v1.10.1
k8s.gcr.io/kube-scheduler-amd64:v1.10.1
k8s.gcr.io/pause-amd64:3.1
k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.8
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.8
k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.8
k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
quay.io/coreos/flannel:v0.10.0-amd64
启动集群
使用kubeadm启动集群,设置版本及pod子网网段。
1
kubeadm init --kubernetes-version=v1.10.1 --pod-network-cidr=10.244.0.0/16
拷贝config文件,使本机能通过kubectl操作集群。
1
2
3
4
5mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile创建flannel相关资源来接管容器网络。
1
2wget https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml(可选)将Master节点的污点去除,使pod能调度到Master节点,但要避免端口冲突。
1
2
3# 查看到Master的hostname
kubectl get no
kubectl taint no <hostname> node-role.kubernetes.io/master:NoSchedule-